package com.authine.cloudpivot.web.api.dao;

import com.authine.cloudpivot.web.Utils.MyMapper;
import com.authine.cloudpivot.web.api.vo.AtsMapModel;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Repository
public interface ReportMapper extends MyMapper<AtsMapModel> {

    List<Map<String, Object>> serviceType();

    List<Map<String, Object>> opTrend(@Param("dateStr")String dateStr,@Param("department")String department);

    List<Map<String, Object>> gpTrend(@Param("dateStr")String dateStr,@Param("department")String department);

    List<Map<String, Object>> revTrend(@Param("dateStr")String dateStr,@Param("department")String department);

    List<Map<String, Object>> sgaTrend(@Param("dateStr")String dateStr,@Param("department")String department);

    List<Map<String, Object>> subjectAdditional(@Param("year")String year);

    List<Map<String, Object>> subjectLoss(@Param("year")String year);

    Integer ytgCount(@Param("year")String year);

    Integer xmCount(@Param("year")String year);

    Integer xmgbCount(@Param("year")String year);

    Integer ytgxmCount(@Param("year")String year);

    Integer xmxmgbCount(@Param("year")String year);

    Integer ytgxmgbCount(@Param("year")String year);

    List<Map<String, Object>> subjectCover();

    List<Map<String, Object>> subjectExecuteRate();

    List<Map<String, Object>> subjectExecuteCycle(@Param("id")String id);

    List<Map<String, Object>> subjectExecuteCity(@Param("id")String id, @Param("date")String date);

    List<Map<String, Object>> employmentRanking(@Param("start")Date start,@Param("end")Date end);

    List<String> getEmployments(@Param("id")String id);

    List<Map<String, Object>> getBeforYearData(@Param("date")String date,@Param("month")String month,@Param("year")String year);

    List<Map<String, Object>> getNowYearData(@Param("date")String date,@Param("month")String month,@Param("year")String year);

    List<Map<String, Object>> getNowYearDataAvgPay(@Param("date")String date,@Param("year")String year);

    List<Map<String, Object>> getBeforYearSumDataLhyg(@Param("date")String date,@Param("year")String year);

    List<Map<String, Object>> getNowYearSumDataLhyg(@Param("date")String date,@Param("year")String year);

    List<Map<String, Object>> projectTaskIssue();

    List<Map<String, Object>> getXsData(@Param("customerName") String customerName,@Param("jdName") String jdName,@Param("start") String start,@Param("end") String end);

    List<String> getRecruitmentGroup();

    Integer getSumDemandFor(@Param("start") String start,@Param("end") String end,@Param("id")String id);

    List<Map<String, Object>> projectMapDataSum(@Param("startDate")Date startDate, @Param("endDate")Date endDate);

    List<Map<String, Object>> projectMapDataProMax(@Param("startDate")Date startDate, @Param("endDate")Date endDate);

    List<Map<String, Object>> projectMapDataCityMax(@Param("startDate")Date startDate, @Param("endDate")Date endDate);

    List<Map<String, Object>> mapSetting();

    String getLastGpOpDate();

    List<Map<String, Object>> recruitmentXsData(@Param("start")String start,@Param("end")String end);

    List<Map<String, Object>> recruitmentWeekDataXxByAscertain(@Param("start")String start,@Param("end")String end, @Param("type")String type);

    Integer getSumDemandForByAscertain(@Param("jdId")String jdId, @Param("subjectId")String subjectId,@Param("type")String type);

    List<Map<String, Object>> areaFinishedByAscertain(@Param("start")String start,@Param("end")String end, @Param("type")String type);

    List<Map<String, Object>> areaDemandForByAscertain(@Param("start")String start,@Param("end")String end, @Param("type")String type);

    List<Map<String, Object>> recruitmentWeekDataXxByIndeterminacy(@Param("start")String start,@Param("end")String end, @Param("type")String type);

    List<Map<String, Object>> areaFinishedByIndeterminacy(@Param("start")String start,@Param("end")String end, @Param("type")String type);

    List<Map<String, Object>> getXsDataSum(@Param("customerName") String customerName,@Param("jdName") String jdName);

    List<Map<String, Object>> recruitmentWeekDataXxByAscertainSum(@Param("type")String type);

    List<Map<String, Object>> areaFinishedByAscertainSum(@Param("type")String type);

    List<String> subjectAdditionalDetail(@Param("year")String year,@Param("month") String month,@Param("type") String type);

    List<String> subjectLossDetail(@Param("year")String year,@Param("month") String month,@Param("type") String type);

    List<String> getGpOpDepartment(@Param("date") String date);
}